//111 222 111111 444 555 777 101010 

// console.log(111);
// const promise = new Promise((resolve, reject) => {
//   reject();
//   console.log(222);
// });
// promise
//   .then(() => {
//     console.log(333);
//     return new Promise((resolve) => {
//       reject();
//     });
//   })
//   .catch(() => {
//     console.log(444);
//   })
//   .then(() => {
//     console.log(555);
//     return new Promise((reject, resolve) => {
//       reject();
//       // resolve();
//     });
//   })
//   .catch(() => {
//     console.log(666);
//     throw new Error("报错了~");
//   })
//   .then(() => {
//     console.log(777);
//     throw new Error("报错了~");
//   })
//   .then(() => console.log(888))
//   .then(() => console.log(999))
//   .catch(() => console.log(101010));
// console.log(111111);



// 1

//  Promise.resolve(1)//成功1
//   .then(2)//无相关处理函数,穿透 还是成功1
//   .then(Promise.resolve(3)) //穿透 成功1
//   .then(console.log) 


// 2
//  Promise.resolve("foo")//成功 foo
//   .then(Promise.resolve("hoo"))//穿透
//   .then((value) => {//value接收promise实例的返回值
//     console.log(value);//foo
//   }) 

//3
//  Promise.resolve(1)//成功 1
//   .then(() => {
//     return 2
//   })//成功 2
//   .then(Promise.resolve(3))//穿透
//   .then(console.log)//2 

//4
// Promise.resolve(1)//成功1
//   .then(() => {
//     return 2
//   })//成功2
//   .then(() => {
//     return Promise.resolve(3)
//   })//成功 3
//   .then(console.log)//3 


//5
// new Promise((resolve, reject) => {
//     reject(1)
//   })//失败1
//   .then(value => {
//     console.log('成功', value);
//   }, reason => {
//     console.log('失败', reason); //失败 1
//   })
//   .then(value => {
//     console.log('成功', value); //成功 undefined
//   }, reason => {
//     console.log('失败', reason);
//   })
//   .catch(reason => console.log('失败', reason)) 

//6
//  new Promise((resolve, reject) => {
//     reject(1)
//   })//失败1
//   .then(value => {
//     console.log('成功', value);
//   })//穿透
//   .then(value => {
//     console.log('成功', value);
//   })//穿透
//   .catch(reason => console.log('失败', reason))//失败 1 



//7
// new Promise((resolve, reject) => {
//     reject(1)
//   })//失败1
//   .then(value => {
//     console.log('成功', value);
//   })//穿透
//   .then(value => {
//     console.log('成功', value);
//   }, reason => {
//     console.log('失败hhhhh', reason);//失败hhhh 1 返回成功 undefined
//   })
//   .catch(reason => console.log('失败', reason)) 


//8
//1 2 4 3 同步=>异步
//  const promise = new Promise((resolve, reject) => {
//   console.log(1)
//   resolve()//成功 undefined
//   console.log(2)
// })
// promise.then(() => {
//   console.log(3)
// })
// console.log(4) 


//9
//  const promise = new Promise((resolve, reject) => {
//   resolve('1')//成功1 只能由pending状态变成其他状态
//   reject('error')
//   resolve('2')
// })

// promise
//   .then((data) => {
//     console.log(data)//1
//   })
//   .catch((err) => {
//     console.log(err)
//   }) 


//10
// 1 2
 Promise.resolve(1)//成功1
  .then((data) => {
    console.log(data) //1
    return 2//成功2
  })
  .catch((err) => {
    return 3
  })
  .then((data) => {
    console.log(data) //2
  }) 